package com.kunsan.compose.data

import com.kunsan.compose.BuildConfig
import com.tencent.mmkv.MMKV

object UserDataManager {

    private val mmkv: MMKV by lazy { MMKV.defaultMMKV() }

    /**
     * 获取userId
     */
    @JvmStatic
    fun getUserId(): String {
        return mmkv.decodeString(DataConstants.KEY_USER_ID) ?: ""
    }

    /**
     * 保存userId
     */
    fun saveUserId(userId: String?) {
        // 保存用户信息
        mmkv.encode(DataConstants.KEY_USER_ID, userId)
    }

    /**
     * 获取clientId
     */
    @JvmStatic
    fun getClientId(): String {
        return mmkv.decodeString(DataConstants.KEY_CURRENT_CLIENT_ID) ?: BuildConfig.APP_ID
    }

    /**
     * 保存clientId
     */
    fun saveClientId(clientId: String?) {
        mmkv.encode(DataConstants.KEY_CURRENT_CLIENT_ID, clientId)
    }

    /**
     * 获取token
     */
    fun getUserToken(): String {
        return mmkv.decodeString(DataConstants.KEY_USER_TOKEN) ?: ""
    }

    /**
     * 保存token
     */
    fun saveUserToken(token: String?) {
        mmkv.encode(DataConstants.KEY_USER_TOKEN, token)
    }

    /**
     * 清除token
     */
    fun clearUserToken() {
        mmkv.removeValueForKey(DataConstants.KEY_USER_TOKEN)
    }

    /**
     * 保存用户信息
     */
    fun saveUserInfo(userInfo: UserInfo?) {
        mmkv.encode(DataConstants.KEY_USER_INFO, userInfo)
    }

    /**
     * 获取用户信息
     */
    fun getUserInfo(): UserInfo? {
        return mmkv.decodeParcelable(DataConstants.KEY_USER_INFO, UserInfo::class.java)
    }


    fun clearWechatSocialInfo() {
        mmkv.removeValueForKey(DataConstants.KEY_USER_WECHAT_SOCIAL_INFO)
    }



    /**
     * 获取设备账号信息
     */
    fun getLoginDeviceAccount(): String {
        return mmkv.decodeString(DataConstants.KEY_USER_LOGIN_DEVICE_ACCOUNT) ?: ""
    }

    /**
     * 保存用户配置信息
     */
    fun saveLoginDeviceAccount(account: String?): Boolean {
        return mmkv.encode(DataConstants.KEY_USER_LOGIN_DEVICE_ACCOUNT, account)
    }

    /**
     * 清除用户相关信息
     */
    fun clearAllUserInfo() {
        mmkv.removeValueForKey(DataConstants.KEY_USER_ID)
        mmkv.removeValueForKey(DataConstants.KEY_USER_TOKEN)
        mmkv.removeValueForKey(DataConstants.KEY_CURRENT_CLIENT_ID)
        mmkv.removeValueForKey(DataConstants.KEY_USER_INFO)
        clearWechatSocialInfo()
    }

}